SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE Procedure [dbo].[SP_TMDOCU_PROV_Q03]
/*-------------------------------------------------------*/
/*---Empresa              : OFISIS S.A.                --*/
/*---Cliente              : CASSINELLI                 --*/
/*---Sistema              : Tesoreria                  --*/
/*---M«dulo               : Empresa                    --*/
/*---Programa             : Antiguedad de Deuda        --*/
/*---Script               : tmdocu_p.sql               --*/
/*---Nombre SP            : SP_TMDOCU_PROV_Q03         --*/
/*---Desarrollado por     : Eduardo Vivar Pomiano      --*/
/*---Fecha Creaci«n       : 21/06/2000                 --*/
/*---Base Datos           : Microsoft Sql Server       --*/
/*---Versi«n              : 7.0                        --*/
/*---Invoca a SP          :                            --*/
/*-------------------------------------------------------*/
/*-------------------------------------------------------*/
/*---Modificado 1 por     :			       --*/
/*---Fecha Modificaci«n   :			       --*/ 
/*---Detalle Modificaci«n :			       --*/
/*---			   			       --*/
/*-------------------------------------------------------*/
/*-------------------------------------------------------*/
/*---Drop Proc SP_TMDOCU_PROV_Q03                      --*/
/*---Grant all on SP_TMDOCU_PROV_Q03 to public         --*/ 
/*---SP_TMDOCU_PROV_Q03 '01','00000001',null,NULL,'01/01/1999','12/12/2000','1','1', 'S'   --*/
/*-------------------------------------------------------*/
 @ISCO_EMPR      TD_VC_002,  
 @ISCO_PROV      TD_VC_020, 
 @ISDE_CODI      VARCHAR(500),
 @ISCO_MONE      TD_VC_003, 
 @IDFE_VENC_0001 TD_DT_001,
 @IDFE_VENC_0002 TD_DT_001,
 @ISSE_0001      TD_VC_001,
 @ISSE_ORDE      TD_VC_001,
 @ISFE_SIST      TD_VC_001,
 @ISSE_DOCU      TD_VC_001, --> SELECCION DOC. VENCIDOS, POR VENCER, O AMBOS
 @ISCO_TIPO_OPER TD_VC_003
	As
CREATE TABLE #TWREPO_PROV 
 ( CO_EMPR      VARCHAR (02) NULL,
   FE_EMIS      DATETIME NULL, 
   FE_VENC      DATETIME NULL ,
   CO_TIPO_DOCU VARCHAR (03) NULL, 
   NU_DOCU_PROV VARCHAR (20) NULL ,
   CO_TIPO_OPER VARCHAR (03) NULL, 
   CO_PROV      VARCHAR (11) NULL, 
   NO_CORT_PROV VARCHAR (050) NULL ,
   DE_OBS1      VARCHAR (100) NULL,    
   CO_MONE      VARCHAR (003) NULL, 
   NU_ANTI      INT NULL,
   IM_DETA      Numeric(16,4) NULL )

DECLARE  @CSCO_EMPR       TD_VC_002,  
         @CDFE_EMIS       TD_DT_001, 
         @CDFE_VENC       TD_DT_001, 
         @CSCO_TIPO_DOCU  TD_VC_003, 
         @CNIM_TOTA       TD_NU_016_004, 
         @CSNU_DOCU_PROV  TD_VC_020, 
         @CSCO_TIPO_OPER  TD_VC_003,
         @CSCO_PROV       TD_VC_020, 
         @CSDE_OBS1       TD_VC_100, 
         @CSCO_MONE       TD_VC_003,
         @VNNU_ANTI       TD_IN_001,
         @VSNO_CORT_PROV  TD_VC_050, 
         @CSNU_LETR_PROV  TD_VC_020, 
         @VNIM_DETA       TD_NU_016_004,
         @VNIM_DETA_AUXI  TD_NU_016_004,       
         @VNIM_PAGA       TD_NU_016_004,
 	 @VNFE_0001       TD_IN_001, 
         @VNFE_0002       TD_IN_001,
         @VSCA_EMPR       TD_VC_100,
	 @VSCA_ARRE	  TD_VC_100 ,
         @VSCA_PROV       TD_VC_100,
         @VSCA_TIDO       VARCHAR(300),
         @VSCA_MONE       TD_VC_100,
	 @VSFE_SELE       TD_VC_100,
         @VSST_CIER_CARG  TD_VC_001,
         @VNIM_PAGA_CARG  TD_NU_016_004, 
         @VSST_CIER_CHEQ  TD_VC_001,
         @VNIM_PAGA_CHEQ  TD_NU_016_004,
         @VSST_CIER_CAJA  TD_VC_001,
         @VNIM_PAGA_CAJA  TD_NU_016_004,
         @VSFE_VENC_0001  TD_VC_010,  
         @VSFE_VENC_0002  TD_VC_010,
         @VSST_CIER_ACAR  TD_VC_001,
         @VSST_CIER_ACHE  TD_VC_001,
         @VSST_CIER_ACAJ  TD_VC_001,
         @VSSE_ORDE       VARCHAR(200),
         @OSTI_DOCU    TD_VC_003, 
    	 @VNFA_ABON       TD_NU_016_004,
         @VSST_SIGN       TD_VC_001,
	 @VNNU_REGI       TD_IN_001,
         @VNIM_PAGA_COMP  TD_NU_016_004,
         @VNIM_PAGA_NCRE  TD_NU_016_004,

         @VNIM_PAGA_NCFA  TD_NU_016_004,
	 @VNIM_PAGA_APOC  TD_NU_016_004,
	 @VSST_CIER_NCPR  TD_VC_001,
	 @CSCO_MONE_DEFA  TD_VC_003,
	 @CSCO_MONE_EXTR  TD_VC_003,
	 @VSCA_TIOP       TD_VC_100,
	 @VNIM_PAGA_RENO  TD_NU_016_004,
	 @VNIM_PAGA_CANJ  TD_NU_016_004,
	 @VNIM_PAGA_TOTA  TD_NU_016_004

  Select @VSCA_EMPR = '', 
	   @VSCA_PROV = '',
  	   @VSCA_TIDO = '',
	   @VSCA_MONE = '',
	   @VSCA_TIOP = ''

    If @ISCO_EMPR is Not Null
       Select @VSCA_EMPR = ' T1.CO_EMPR =  "'+@ISCO_EMPR+'" And  '
    If @ISCO_PROV is Not Null
       Select @VSCA_PROV = ' T1.CO_PROV =  "' + @ISCO_PROV+ '" And '

    If @ISDE_CODI is Not Null
       Select @VSCA_TIDO = ' T1.CO_TIPO_DOCU IN (' + @ISDE_CODI+ ') And '

    If @ISCO_TIPO_OPER is Not Null
       Select @VSCA_TIOP = ' T1.CO_TIPO_OPER = "' + @ISCO_TIPO_OPER+ '" And '

    If @ISCO_MONE is Not Null 
       Select @VSCA_MONE = ' T1.CO_MONE = "' + @ISCO_MONE+ '"  And  '   

    Select @VSSE_ORDE = ''

    -- SOLO DOC. POR VENCER
    IF @ISSE_DOCU = '1'
	Select @VSSE_ORDE = ' AND T1.NU_ANTI < 0 '
	
    -- SOLO DOC. VENCIDOS
    IF @ISSE_DOCU = '2'
	Select @VSSE_ORDE = ' AND T1.NU_ANTI >= 0 '

    -- AMBOS
    IF @ISSE_DOCU = '3'
	Select @VSSE_ORDE = ''

    If @ISSE_ORDE = '1'
       Select @VSSE_ORDE = @VSSE_ORDE + ' Order by T1.CO_EMPR, T1.CO_MONE, T1.FE_VENC, T1.CO_TIPO_DOCU, T1.NU_DOCU_PROV '
    If @ISSE_ORDE = '2'
       Select @VSSE_ORDE = @VSSE_ORDE + ' Order By T1.CO_EMPR, T1.CO_MONE, T1.CO_PROV, T1.FE_VENC, T1.CO_TIPO_DOCU, T1.NU_DOCU_PROV'       

    Select @VSFE_VENC_0001 = convert (varchar(10), @IDFE_VENC_0001,103)
    Select @VSFE_VENC_0002 = convert (varchar(10), @IDFE_VENC_0002,103)

    /*-----------------------   CURSOR   PARA LOS DOCUMENTOS ---------------------------------*/      
    /*----------------- TABLA : TMDOCU_PROV ----------------------*/      

    EXECUTE ('Declare	CU_TMDOCU_PROV_Q01_1 Cursor
    For	
    Select T1.CO_EMPR, T1.FE_EMIS , T1.FE_VENC , T1.CO_TIPO_DOCU , T1.NU_DOCU_PROV , T1.CO_PROV, 
           T1.DE_OBSE, T1.IM_TOTA , T1.CO_MONE, T2.CO_MONE_DEFA, T2.CO_MONE_EXTR, T1.CO_TIPO_OPER           
    From  TMDOCU_PROV T1, TMPARA_TESO T2
    Where '+ @VSCA_EMPR+@VSCA_PROV+@VSCA_TIDO+@VSCA_MONE+@VSCA_TIOP+
    ' T1.FE_VENC >= Convert(Datetime, "' + @VSFE_VENC_0001 + '" ,103)
    And T1.FE_VENC <= Convert(Datetime, "'+ @VSFE_VENC_0002 + '" ,103)
    And T1.CO_ESTA_DOCU != "ANU" 
    And ISNULL(T1.NU_REND_GAST,"") =  ""
    And T1.CO_EMPR = T2.CO_EMPR   ') 

    Open CU_TMDOCU_PROV_Q01_1
    Fetch  CU_TMDOCU_PROV_Q01_1 INTO  @CSCO_EMPR, @CDFE_EMIS, @CDFE_VENC, @CSCO_TIPO_DOCU, 
    @CSNU_DOCU_PROV,  @CSCO_PROV, @CSDE_OBS1, @CNIM_TOTA, @CSCO_MONE,
    @CSCO_MONE_DEFA, @CSCO_MONE_EXTR, @CSCO_TIPO_OPER


    Select @VNFE_0001  = @@FETCH_STATUS
    While (@VNFE_0001 = 0)
	Begin
	  If (@VNFE_0001 < 0)
     	     Begin
               RAISERROR 20001 "FIN DE ARCHIVO"
 	       Close CU_TMDOCU_PROV_Q01_1
	       Deallocate CU_TMDOCU_PROV_Q01_1
	       Return
             End		

	    --SELECT @CSCO_PROV, @CSCO_TIPO_DOCU,   @CSNU_DOCU_PROV

	     Select @VSST_SIGN = ST_SIGN 
             FROM TTDOCU_CNTB
	     Where  TI_DOCU = @CSCO_TIPO_DOCU

             IF @VSST_SIGN  = 'S'
	        SELECT @VNFA_ABON = 1
	     ELSE 
	        SELECT @VNFA_ABON = -1

	     SELECT @VSNO_CORT_PROV = NO_AUXI
             FROM   TMAUXI_EMPR 
             WHERE  CO_EMPR = @CSCO_EMPR 
             And    TI_AUXI_EMPR = 'P'
             And    RTRIM(CO_AUXI_EMPR) = RTRIM(@CSCO_PROV) 

	     Select @VNIM_PAGA_CARG = 0, @VSST_CIER_CARG = NULL, @VNIM_PAGA_COMP  = 0,
             @VNIM_PAGA_NCRE  = 0,  @VNIM_PAGA_NCFA  = 0, @VNIM_PAGA_APOC = 0, 
	     @VNIM_PAGA_CANJ = 0, @VNIM_PAGA_RENO = 0 

	     /* SI TIENE PAGOS EN BANCOS  (DOCUMENTOS DIFERENTES A CHEQUES) */

           Select @VSST_CIER_CARG = Max(T1.ST_CIER_DOCU),
                  @VNIM_PAGA_CARG = Isnull(Sum(Isnull(T1.IM_CONV_DOCU,0)),0)
           From   TDMOVI_BANC T1, TCMOVI_BANC T2
           Where  T1.CO_EMPR = @CSCO_EMPR  
           And    T1.TI_MOVI_BANC = 'E' 
           And    T1.CO_ENTI = @CSCO_PROV 
           And    T1.TI_DOCU_ENTI = @CSCO_TIPO_DOCU
           And    T1.NU_DOCU_ENTI = @CSNU_DOCU_PROV
           And    T2.FE_OPER  <= @IDFE_VENC_0002
           And    T2.NU_CHEQ is Null
           And    T2.TI_SITU = 'ACT' 
           And    T1.CO_EMPR = T2.CO_EMPR  
           And    T1.CO_UNID_CONC = T2.CO_UNID_CONC
           And    T1.CO_BANC = T2.CO_BANC  
           And    T1.NU_CNTA_BANC  = T2.NU_CNTA_BANC  
           And    T1.AA_BNCO = T2.AA_BNCO
           And    T1.MM_BNCO = T2.MM_BNCO 
           And    T1.TI_MOVI_BANC  = T2.TI_MOVI_BANC 
           And    T1.NU_COMP_BANC = T2.NU_COMP_BANC  
           Group By T2.CO_ENTI, T1.TI_DOCU_ENTI, T1.NU_DOCU_ENTI

           If @VSST_CIER_CARG is null
              Select @VSST_CIER_CARG = 'N'

           If ( @CNIM_TOTA >  @VNIM_PAGA_CARG ) and @VSST_CIER_CARG = 'N'
              Begin
               /* SI TIENE PAGOS CON FECHA DE CHEQUE O FECHA DE ENTREGA */

               Select @VNIM_PAGA_CHEQ = 0, @VSST_CIER_CHEQ = NULL

               If @ISSE_0001 = '1' 
                  Select @VSST_CIER_CHEQ = Max(T1.ST_CIER_DOCU),
                         @VNIM_PAGA_CHEQ = Isnull(Sum(Isnull(T1.IM_CONV_DOCU,0)),0)
                  From   TDMOVI_BANC T1, TCMOVI_BANC T2
                  Where  T1.CO_EMPR = @CSCO_EMPR  
                  And    T1.TI_MOVI_BANC = "E"
                  And    T1.CO_ENTI = @CSCO_PROV 
                  And    T1.TI_DOCU_ENTI = @CSCO_TIPO_DOCU
                  And    T1.NU_DOCU_ENTI = @CSNU_DOCU_PROV 
                  And    T2.NU_CHEQ is Not Null 
                  And    T2.FE_CHEQ <= @IDFE_VENC_0002
                  And    T2.TI_SITU = "ACT" 
                  And    T1.CO_EMPR = T2.CO_EMPR  
                  And    T1.CO_UNID_CONC = T2.CO_UNID_CONC
                  And    T1.CO_BANC = T2.CO_BANC  
                  And    T1.NU_CNTA_BANC  = T2.NU_CNTA_BANC  
                  And    T1.AA_BNCO = T2.AA_BNCO
                  And    T1.MM_BNCO = T2.MM_BNCO 
                  And    T1.TI_MOVI_BANC  = T2.TI_MOVI_BANC 
                  And    T1.NU_COMP_BANC = T2.NU_COMP_BANC  
                  Group  By T2.CO_ENTI, T1.TI_DOCU_ENTI, T1.NU_DOCU_ENTI 

               If @ISSE_0001 = '2' 

                  Select @VSST_CIER_CHEQ = Max(T1.ST_CIER_DOCU),
                         @VNIM_PAGA_CHEQ = Isnull(Sum(Isnull(T1.IM_CONV_DOCU,0)),0)
                  From   TDMOVI_BANC T1, TCMOVI_BANC T2
                  Where  T1.CO_EMPR = @CSCO_EMPR  
                  And    T1.TI_MOVI_BANC = "E"
                  And    T1.CO_ENTI = @CSCO_PROV 
                  And    T1.TI_DOCU_ENTI = @CSCO_TIPO_DOCU
                  And    T1.NU_DOCU_ENTI = @CSNU_DOCU_PROV 
                  And    T2.NU_CHEQ is Not Null 
                  And    T2.FE_ENTR_CHEQ <= @IDFE_VENC_0002
                  And    T2.TI_SITU = "ACT" 
                  And    T1.CO_EMPR = T2.CO_EMPR  
                  And    T1.CO_UNID_CONC = T2.CO_UNID_CONC
                  And    T1.CO_BANC = T2.CO_BANC  
                  And    T1.NU_CNTA_BANC  = T2.NU_CNTA_BANC  
                  And    T1.AA_BNCO = T2.AA_BNCO
                  And    T1.MM_BNCO = T2.MM_BNCO 
                  And    T1.TI_MOVI_BANC  = T2.TI_MOVI_BANC 
                  And    T1.NU_COMP_BANC = T2.NU_COMP_BANC  
                  Group  By T2.CO_ENTI, T1.TI_DOCU_ENTI, T1.NU_DOCU_ENTI 

                  If @VSST_CIER_CHEQ is null
                     Select @VSST_CIER_CHEQ = 'N'

                  If (@CNIM_TOTA >  @VNIM_PAGA_CHEQ ) and @VSST_CIER_CARG = 'N'
                    Begin

                      /* SI TIENE PAGOS CON CAJA */
            
                      Select @VNIM_PAGA_CAJA = 0, @VSST_CIER_CAJA = NULL

                      Select @VSST_CIER_CAJA = Max(T1.ST_CIER_DOCU),
                             @VNIM_PAGA_CAJA = Isnull(Sum(Isnull(T1.IM_CONV_DOCU,0)),0)
                      From   TDMOVI_CAJA T1, TCMOVI_CAJA T2
                      Where  T1.CO_EMPR = @CSCO_EMPR  
                      And    T1.TI_MOVI = 'E' 
          	      And    T1.CO_ENTI = @CSCO_PROV 
                      And    T1.TI_DOCU_ENTI = @CSCO_TIPO_DOCU
                      And    T1.NU_DOCU_ENTI = @CSNU_DOCU_PROV
                      And    T2.FE_OPER  <= @IDFE_VENC_0002
                      And    T2.TI_SITU = 'ACT' 
 		      And    T1.CO_EMPR = T2.CO_EMPR  
                      And    T1.CO_CAJA = T2.CO_CAJA
                      And    T1.AA_CAJA = T2.AA_CAJA
                      And    T1.MM_CAJA = T2.MM_CAJA 
                      And    T1.TI_MOVI = T2.TI_MOVI
                      And    T1.NU_COMP_CAJA = T2.NU_COMP_CAJA
                      Group  By T2.CO_ENTI, T1.TI_DOCU_ENTI, T1.NU_DOCU_ENTI 

                      If @VSST_CIER_CAJA is null
                         Select @VSST_CIER_CAJA = 'N'

                      If (@CNIM_TOTA >  @VNIM_PAGA_CAJA ) and @VSST_CIER_CAJA = 'N'
                          Begin
                            --SELECT @CSCO_PROV, @CSCO_TIPO_DOCU,   @CSNU_DOCU_PROV
                            If @CSCO_TIPO_DOCU = 'O/C' OR @CSCO_TIPO_DOCU = 'O/S'
   	                       Begin 
	                         Select @VNNU_REGI = 0 , @VNIM_PAGA_COMP = 0	       

                                 Select @VNNU_REGI = Count(*)
	                         From   TCAMAR_OCPR t1,  TDAMAR_OCPR t2
	                         Where  T1.CO_EMPR = @CSCO_EMPR
	                         And    T1.FE_AMAR <= @IDFE_VENC_0002
                                 And    T1.TI_SITU = 'ACT'
	                         And    T1.CO_EMPR = T2.CO_EMPR
	                         And    T1.NU_AMAR = T2.NU_AMAR
                 	         And    T2.CO_TIDO_ORIG = @CSCO_TIPO_DOCU
	                         And    T2.NU_DOCU_ORIG = @CSNU_DOCU_PROV

                                 If @VNNU_REGI > 0
	                            Select @VNIM_PAGA_COMP = @CNIM_TOTA

                                 IF @ISFE_SIST  = 'S'
                                    Select @VNNU_ANTI = datediff(day ,@CDFE_VENC , GETDATE())  
		                 Else
			           Select @VNNU_ANTI = datediff(day ,@CDFE_VENC ,@IDFE_VENC_0002)

                                 Select @VNIM_DETA = 0
                                
                                 Select @VNIM_DETA = (@CNIM_TOTA - ( Isnull(@VNIM_PAGA_CAJA,0) + Isnull(@VNIM_PAGA_CARG,0) + 
                                                      Isnull(@VNIM_PAGA_CHEQ,0) + Isnull(@VNIM_PAGA_COMP,0) ))

                                 --Select @CSCO_PROV,  @CSCO_TIPO_DOCU, @CSNU_DOCU_PROV, @CNIM_TOTA, @VNIM_PAGA_NCRE , @VSST_CIER_NCPR 

                                 If (@CNIM_TOTA >  @VNIM_PAGA_COMP ) 
                                     Begin 
                                       Insert #TWREPO_PROV ( CO_EMPR, FE_EMIS, FE_VENC, CO_TIPO_DOCU, NU_DOCU_PROV, CO_PROV,
                                       NO_CORT_PROV, DE_OBS1, CO_MONE, NU_ANTI, IM_DETA, CO_TIPO_OPER)
                                       Values (@CSCO_EMPR, @CDFE_EMIS, @CDFE_VENC, @CSCO_TIPO_DOCU, @CSNU_DOCU_PROV, 
                                       @CSCO_PROV, @VSNO_CORT_PROV, @CSDE_OBS1, @CSCO_MONE, @VNNU_ANTI, @VNIM_DETA, @CSCO_TIPO_OPER)                                     
                                     End
	                       End
                            Else
                              Begin


				 -- Busco importes Canjeados
			  	Select @VNIM_PAGA_CANJ = ISNULL(SUM( ISNULL(T2.IM_CANJ_MDOC, 0)),0)
			  	From   TCCANJ_PROV T1, TDCANJ_PROV T2
                  	  	Where  T1.CO_EMPR =  @CSCO_EMPR
                  	  	AND    T1.FE_CANJ <= @IDFE_VENC_0002
                  	  	AND    T1.TI_SITU != 'ANU'
                  	  	AND    T2.CO_TIPO_DOCU = @CSCO_TIPO_DOCU
                  	  	AND    T2.NU_DOCU_PROV = @CSNU_DOCU_PROV
			  	AND    T1.CO_EMPR = T2.CO_EMPR 

                         	AND    T1.NU_CANJ = T2.NU_CANJ
			  	AND    T1.CO_PROV = T2.CO_PROV

				Exec SP_TTDOCU_CNTB_Q02 4, @OSTI_DOCU OUTPUT

                                IF @CSCO_TIPO_DOCU = @OSTI_DOCU
                                   Begin
                                     Select @VSST_CIER_NCPR = Max(ST_CIER_DOCU), 
                                            @VNIM_PAGA_NCRE = Case when Min(t1.CO_MONE)  = Min(T3.CO_MONE) THEN Isnull(SUM(T2.IM_PAGO_ORIG),0)
                                     ELSE CASE when MIN(t1.CO_MONE) = @CSCO_MONE_EXTR 
                                           THEN Round(Sum(Isnull(T2.IM_PAGO_ORIG,0) * T1.FA_TIPO_CAMB),2)
                                     ELSE Round(Isnull (SUM(T2.IM_PAGO_ORIG / T1.FA_TIPO_CAMB),0),2)
                                        END 
                                     END
                                     From   TCAMAR_NCPR T1 , TDAMAR_NCPR T2, TMDOCU_PROV T3
                                     Where  T1.CO_EMPR =   @CSCO_EMPR
                                     AND    T1.FE_AMAR <= @IDFE_VENC_0002
                                     AND    T1.TI_SITU = 'ACT'
                                     AND    T2.CO_TIDO_ORIG = @CSCO_TIPO_DOCU 
                                     AND    T2.NU_DOCU_ORIG = @CSNU_DOCU_PROV 
                                     AND    T1.CO_EMPR = T2.CO_EMPR  
                                     AND    T1.NU_AMAR = T2.NU_AMAR
                                     AND    T2.CO_EMPR = T3.CO_EMPR
                                     AND    T1.CO_PROV = T3.CO_PROV
                                     AND    T2.CO_TIDO_ORIG = T3.CO_TIPO_DOCU
                                     AND    T2.NU_DOCU_ORIG = T3.NU_DOCU_PROV
                                     Group By T1.CO_PROV, T2.CO_TIDO_ORIG, T2.NU_DOCU_ORIG                                     

                                     IF @ISFE_SIST  = 'S'
                                       Select @VNNU_ANTI = datediff(day ,@CDFE_VENC , GETDATE())  
		                     Else
			               Select @VNNU_ANTI = datediff(day ,@CDFE_VENC ,@IDFE_VENC_0002)  

                                     Select @VNIM_DETA = 0, @VNIM_DETA_AUXI = 0

                                     -- Importe pagado a la Nota de Credito
                                     Select @VNIM_PAGA_TOTA = Isnull(@VNIM_PAGA_CAJA,0) + Isnull(@VNIM_PAGA_CARG,0) + 
                                                          Isnull(@VNIM_PAGA_CHEQ,0) + Isnull(@VNIM_PAGA_NCRE,0) + 
                                                          Isnull(@VNIM_PAGA_APOC,0)

				     --Select @CSCO_PROV,  @CSCO_TIPO_DOCU, @CSNU_DOCU_PROV, @CNIM_TOTA, @VNIM_PAGA_NCRE , @VSST_CIER_NCPR 
		
                		     If @VSST_CIER_NCPR is null
		                        Select @VSST_CIER_NCPR = 'N'

                                     If (@CNIM_TOTA >  @VNIM_PAGA_NCRE ) and @VSST_CIER_NCPR = 'N'
                                        Begin 

					  -- Busco Importes renovados
			  		Select @VNIM_PAGA_RENO = ISNULL(SUM( ISNULL(T2.IM_RENO_MDOC, 0)),0)
			  		From   TCRENO_PROV T1, TDRENO_PROV T2
                  	  		Where  T1.CO_EMPR =  @CSCO_EMPR
                  	  		AND    T1.FE_RENO <= @IDFE_VENC_0002
                  	  		AND    T1.TI_SITU != 'ANU'
                  	  		AND    T2.CO_TIPO_DOCU = @CSCO_TIPO_DOCU
                  	  		AND    T2.NU_DOCU_PROV = @CSNU_DOCU_PROV
			  		AND    T1.CO_EMPR = T2.CO_EMPR  
                          		AND    T1.NU_RENO = T2.NU_RENO
			  		AND    T1.CO_PROV = T2.CO_PROV	
					
					Select @VNIM_PAGA_TOTA = @VNIM_PAGA_TOTA + ISNULL(@VNIM_PAGA_CANJ,0) + ISNULL(@VNIM_PAGA_RENO,0)

					 Select @VNIM_DETA = (@CNIM_TOTA - @VNIM_PAGA_TOTA)*@VNFA_ABON
					
					If @CNIM_TOTA >  @VNIM_PAGA_TOTA

                                          Insert #TWREPO_PROV ( CO_EMPR, FE_EMIS, FE_VENC, CO_TIPO_DOCU, NU_DOCU_PROV, CO_PROV,
                  NO_CORT_PROV, DE_OBS1, CO_MONE, NU_ANTI, IM_DETA, CO_TIPO_OPER)
                                          Values (@CSCO_EMPR, @CDFE_EMIS, @CDFE_VENC, @CSCO_TIPO_DOCU, @CSNU_DOCU_PROV, 
                                          @CSCO_PROV, @VSNO_CORT_PROV, @CSDE_OBS1, @CSCO_MONE, @VNNU_ANTI, @VNIM_DETA, @CSCO_TIPO_OPER)
                                       End
                                   End 
                                Else
                                  Begin
                                    Select @VNIM_PAGA_NCFA = Case when Min(t1.CO_MONE)  = Min(T3.CO_MONE) THEN Isnull(SUM(T2.IM_PAGO_DEST),0)
                                    ELSE CASE when MIN(t1.CO_MONE) = @CSCO_MONE_EXTR
                                          THEN Round(Sum(Isnull(T2.IM_PAGO_DEST,0) * T1.FA_TIPO_CAMB),2)
                                    ELSE Round(Isnull (SUM(T2.IM_PAGO_DEST / T1.FA_TIPO_CAMB),0),2)
                                       END 
                                    END    
                                    From   TCAMAR_NCPR T1 , TDAMAR_NCPR T2, TMDOCU_PROV T3
                                    Where  T1.CO_EMPR = @CSCO_EMPR
                                    AND    T1.FE_AMAR <= @IDFE_VENC_0002
                                    AND    T1.TI_SITU = 'ACT'
                                    AND    T2.CO_TIDO_DEST = @CSCO_TIPO_DOCU 
                                    AND    T2.NU_DOCU_DEST = @CSNU_DOCU_PROV 
                                    AND    T1.CO_EMPR = T2.CO_EMPR  
                                    AND    T1.NU_AMAR = T2.NU_AMAR
                                    AND    T2.CO_EMPR = T3.CO_EMPR
                                    AND    T1.CO_PROV = T3.CO_PROV
                                    AND    T2.CO_TIDO_DEST = T3.CO_TIPO_DOCU
                                    AND    T2.NU_DOCU_DEST = T3.NU_DOCU_PROV
                                    Group By T1.CO_PROV, T2.CO_TIDO_DEST, T2.NU_DOCU_DEST

                                    Select @VNIM_PAGA_APOC = Case when Min(t1.CO_MONE)  = Min(T3.CO_MONE) THEN Isnull(SUM(T2.IM_PAGO_DEST),0)

                                    ELSE CASE when MIN(t1.CO_MONE) = @CSCO_MONE_EXTR
                                          THEN Round(Sum(Isnull(T2.IM_PAGO_DEST,0) * T1.FA_TIPO_CAMB),2)
                                    ELSE Round(Isnull (SUM(T2.IM_PAGO_DEST / T1.FA_TIPO_CAMB),0),2)
                                       END 
                                    END    
                                    From   TCAMAR_OCPR T1 , TDAMAR_OCPR T2, TMDOCU_PROV T3
                                    Where  T1.CO_EMPR =   @CSCO_EMPR
                                    AND    T1.FE_AMAR <= @IDFE_VENC_0002
                                    AND    T1.TI_SITU = 'ACT'
                                    AND    T2.CO_TIDO_DEST = @CSCO_TIPO_DOCU 
                                    AND    T2.NU_DOCU_DEST = @CSNU_DOCU_PROV 
                                    AND    T1.CO_EMPR = T2.CO_EMPR  
                                    AND    T1.NU_AMAR = T2.NU_AMAR
                                    AND    T2.CO_EMPR = T3.CO_EMPR
                                    AND    T1.CO_PROV = T3.CO_PROV
                                    AND    T2.CO_TIDO_DEST = T3.CO_TIPO_DOCU
                                    AND    T2.NU_DOCU_DEST = T3.NU_DOCU_PROV
                                    Group By T1.CO_PROV, T2.CO_TIDO_DEST, T2.NU_DOCU_DEST

                                    IF @ISFE_SIST  = 'S'
                                       Select @VNNU_ANTI = datediff(day ,@CDFE_VENC , GETDATE())  
	                            Else
			              Select @VNNU_ANTI = datediff(day ,@CDFE_VENC ,@IDFE_VENC_0002)  

                                    Select @VNIM_DETA = 0, @VNIM_DETA_AUXI = 0				    

                                    Select @VNIM_DETA = (@CNIM_TOTA - ( Isnull(@VNIM_PAGA_CAJA,0) + Isnull(@VNIM_PAGA_CARG,0) + 
                                                         Isnull(@VNIM_PAGA_CHEQ,0) + Isnull(@VNIM_PAGA_COMP,0) + Isnull(@VNIM_PAGA_NCRE,0) + 
                                                         Isnull(@VNIM_PAGA_NCFA,0) + Isnull(@VNIM_PAGA_APOC,0))) * @VNFA_ABON 

                                    Select @VNIM_DETA_AUXI = (@CNIM_TOTA - ( Isnull(@VNIM_PAGA_CAJA,0) + Isnull(@VNIM_PAGA_CARG,0) + 
                                                              Isnull(@VNIM_PAGA_CHEQ,0) + Isnull(@VNIM_PAGA_COMP,0) + Isnull(@VNIM_PAGA_NCRE,0) + 
                                                              Isnull(@VNIM_PAGA_NCFA,0) + Isnull(@VNIM_PAGA_APOC,0)))

                                    If @VNIM_DETA_AUXI > 0 
                                       Begin 
                                         Insert #TWREPO_PROV ( CO_EMPR, FE_EMIS, FE_VENC, CO_TIPO_DOCU, NU_DOCU_PROV, CO_PROV,
                                         NO_CORT_PROV, DE_OBS1, CO_MONE, NU_ANTI, IM_DETA, CO_TIPO_OPER)
                                         Values (@CSCO_EMPR, @CDFE_EMIS, @CDFE_VENC, @CSCO_TIPO_DOCU, @CSNU_DOCU_PROV, 
                     @CSCO_PROV, @VSNO_CORT_PROV, @CSDE_OBS1, @CSCO_MONE, @VNNU_ANTI, @VNIM_DETA, @CSCO_TIPO_OPER)
                                       End
                                  End
                              End /* Fin NCR */
                       End /* Fin Caja */
                  End /* Fin Bancos con cheque */
             End /* Fin Bancos sin cheque */

      Fetch  CU_TMDOCU_PROV_Q01_1 INTO  @CSCO_EMPR, @CDFE_EMIS, @CDFE_VENC, @CSCO_TIPO_DOCU, 
      @CSNU_DOCU_PROV,  @CSCO_PROV, @CSDE_OBS1, @CNIM_TOTA, @CSCO_MONE,
      @CSCO_MONE_DEFA, @CSCO_MONE_EXTR, @CSCO_TIPO_OPER

      Select @VNFE_0001 = @@FETCH_STATUS

  End

  Close CU_TMDOCU_PROV_Q01_1
  Deallocate CU_TMDOCU_PROV_Q01_1

/*-------------------------------   CURSOR   PARA  LETRAS  ---------------------------------*/      
/*-------------------------------   TABLA : TMLETR_PROV ---------------------------------*/      

  Exec SP_TTDOCU_CNTB_Q02 6, @OSTI_DOCU OUTPUT 

  If PATINDEX('%'+@OSTI_DOCU+'%', @ISDE_CODI) > 0
     Begin
       Execute ( ' DECLARE CU_TMDOCU_PROV_Q01_1 CURSOR 
       FOR	
       Select T1.CO_EMPR, T1.FE_EMIS, T1.FE_VENC, T1.NU_LETR_PROV, T1.CO_PROV, 
              T1.IM_TOTA, T1.CO_MONE, T2.CO_MONE_DEFA, T2.CO_MONE_EXTR, T1.CO_TIPO_OPER
       From   TMLETR_PROV T1, TMPARA_TESO T2
       Where '+ @VSCA_EMPR+@VSCA_PROV+@VSCA_MONE+ @VSCA_TIOP+
       ' T1.FE_VENC >= Convert(Datetime, "' + @VSFE_VENC_0001 + '" ,103)
       And T1.FE_VENC <= Convert(Datetime, "'+ @VSFE_VENC_0002 + '" ,103)
       And T1.CO_ESTA_DOCU != "ANU" 
       And T1.CO_EMPR = T2.CO_EMPR ') 

       Open CU_TMDOCU_PROV_Q01_1
       Fetch  CU_TMDOCU_PROV_Q01_1 INTO  @CSCO_EMPR, @CDFE_EMIS, @CDFE_VENC, 
       @CSNU_LETR_PROV,  @CSCO_PROV, @CNIM_TOTA, @CSCO_MONE, 
       @CSCO_MONE_DEFA, @CSCO_MONE_EXTR, @CSCO_TIPO_OPER

       Select @VNFE_0001  = @@FETCH_STATUS
       While (@VNFE_0001 = 0)
         Begin
           If (@VNFE_0001 < 0)
     	        Begin
                RAISERROR 20001 "FIN DE ARCHIVO"
 	          Close CU_TMDOCU_PROV_Q01_1
	          Deallocate CU_TMDOCU_PROV_Q01_1
	          Return
              End		
       
	     SELECT @VSNO_CORT_PROV = NO_AUXI
           FROM   TMAUXI_EMPR 
           WHERE  CO_EMPR = @CSCO_EMPR 
           And    TI_AUXI_EMPR = 'P'
           And    CO_AUXI_EMPR = @CSCO_PROV 

	    
	     Select @VNIM_PAGA_CARG = 0, @VSST_CIER_CARG = NULL, @VNIM_PAGA_RENO = 0         

           /* SI TIENE PAGOS EN BANCOS  (DOCUMENTOS DIFERENTES A CHEQUES) */

           Select @VSST_CIER_CARG = Max(T1.ST_CIER_DOCU),
                  @VNIM_PAGA_CARG = Isnull(Sum(Isnull(T1.IM_CONV_DOCU,0)),0)
           From   TDMOVI_BANC T1, TCMOVI_BANC T2
           Where  T1.CO_EMPR = @CSCO_EMPR  
           And    T1.TI_MOVI_BANC = 'E' 
           And    T1.CO_ENTI = @CSCO_PROV 
           And    T1.TI_DOCU_ENTI = 'LET'
           And    T1.NU_DOCU_ENTI = @CSNU_LETR_PROV
           And    T2.FE_OPER  <= @IDFE_VENC_0002
           And    T2.NU_CHEQ is Null
           And    T2.TI_SITU = 'ACT' 
           And    T1.CO_EMPR = T2.CO_EMPR  
           And    T1.CO_UNID_CONC = T2.CO_UNID_CONC
           And    T1.CO_BANC = T2.CO_BANC  
           And    T1.NU_CNTA_BANC  = T2.NU_CNTA_BANC  
           And    T1.AA_BNCO = T2.AA_BNCO
           And    T1.MM_BNCO = T2.MM_BNCO 
           And    T1.TI_MOVI_BANC  = T2.TI_MOVI_BANC 
           And    T1.NU_COMP_BANC = T2.NU_COMP_BANC  
           Group By T2.CO_ENTI, T1.TI_DOCU_ENTI, T1.NU_DOCU_ENTI

           If @VSST_CIER_CARG is null
              Select @VSST_CIER_CARG = 'N'

           If (@CNIM_TOTA >  @VNIM_PAGA_CARG ) and @VSST_CIER_CARG = 'N'               
              Begin

               /* SI TIENE PAGOS CON FECHA DE CHEQUE O FECHA DE ENTREGA */

               Select @VNIM_PAGA_CHEQ = 0, @VSST_CIER_CHEQ = NULL

               If @ISSE_0001 = '1' 

                  Select @VSST_CIER_CHEQ = Max(T1.ST_CIER_DOCU),
      @VNIM_PAGA_CHEQ = Isnull(Sum(Isnull(T1.IM_CONV_DOCU,0)),0)
                  From   TDMOVI_BANC T1, TCMOVI_BANC T2
                  Where  T1.CO_EMPR = @CSCO_EMPR  
                  And    T1.TI_MOVI_BANC = "E"                  
                  And    T1.CO_ENTI = @CSCO_PROV 
                  And    T1.TI_DOCU_ENTI = 'LET'
                  And    T1.NU_DOCU_ENTI = @CSNU_LETR_PROV 
                  And    T2.NU_CHEQ is Not Null 
                  And    T2.FE_CHEQ <= @IDFE_VENC_0002
                  And    T2.TI_SITU = "ACT" 
                  And    T1.CO_EMPR = T2.CO_EMPR  
                  And    T1.CO_UNID_CONC = T2.CO_UNID_CONC
                  And    T1.CO_BANC = T2.CO_BANC  
                  And    T1.NU_CNTA_BANC = T2.NU_CNTA_BANC  
                  And    T1.AA_BNCO = T2.AA_BNCO
                  And    T1.MM_BNCO = T2.MM_BNCO 
                  And    T1.TI_MOVI_BANC  = T2.TI_MOVI_BANC 
                  And    T1.NU_COMP_BANC = T2.NU_COMP_BANC  
                  Group  By T2.CO_ENTI, T1.TI_DOCU_ENTI, T1.NU_DOCU_ENTI 

   If @ISSE_0001 = '2' 

                  Select @VSST_CIER_CHEQ = Max(T1.ST_CIER_DOCU),
                         @VNIM_PAGA_CHEQ = Isnull(Sum(Isnull(T1.IM_CONV_DOCU,0)),0)
                  From   TDMOVI_BANC T1, TCMOVI_BANC T2
                  Where  T1.CO_EMPR = @CSCO_EMPR  
                  And    T1.TI_MOVI_BANC = "E"
                  And    T1.CO_ENTI = @CSCO_PROV 
                  And    T1.TI_DOCU_ENTI = 'LET'
                  And    T1.NU_DOCU_ENTI = @CSNU_LETR_PROV 
                  And    T2.NU_CHEQ is Not Null 
                  And    T2.FE_ENTR_CHEQ <= @IDFE_VENC_0002
                  And    T2.TI_SITU = "ACT" 
                  And    T1.CO_EMPR = T2.CO_EMPR  
                  And    T1.CO_UNID_CONC = T2.CO_UNID_CONC
                  And    T1.CO_BANC = T2.CO_BANC  
                  And    T1.NU_CNTA_BANC  = T2.NU_CNTA_BANC  
                  And    T1.AA_BNCO = T2.AA_BNCO
                  And    T1.MM_BNCO = T2.MM_BNCO 
                  And    T1.TI_MOVI_BANC  = T2.TI_MOVI_BANC 
                  And    T1.NU_COMP_BANC = T2.NU_COMP_BANC  
                  Group  By T2.CO_ENTI, T1.TI_DOCU_ENTI, T1.NU_DOCU_ENTI 

                  If @VSST_CIER_CHEQ is null
                     Select @VSST_CIER_CHEQ = 'N'

                  If (@CNIM_TOTA >  @VNIM_PAGA_CHEQ ) and @VSST_CIER_CHEQ = 'N'
                    Begin

                      /* SI TIENE PAGOS CON CAJA */
            
                      Select @VNIM_PAGA_CAJA = 0, @VSST_CIER_CAJA = NULL

                      Select @VSST_CIER_CAJA = Max(T1.ST_CIER_DOCU),
                             @VNIM_PAGA_CAJA = Isnull(Sum(Isnull(T1.IM_CONV_DOCU,0)),0)
                      From   TDMOVI_CAJA T1, TCMOVI_CAJA T2
                      Where  T1.CO_EMPR = @CSCO_EMPR  
                      And    T1.TI_MOVI = 'E' 
                      And    T1.CO_ENTI = @CSCO_PROV 

                      And    T1.TI_DOCU_ENTI = 'LET'
                      And    T1.NU_DOCU_ENTI = @CSNU_LETR_PROV
                      And    T2.FE_OPER  <= @IDFE_VENC_0002
                      And    T2.TI_SITU = 'ACT' 
                      And    T1.CO_EMPR = T2.CO_EMPR  
                      And    T1.CO_CAJA = T2.CO_CAJA
                      And    T1.AA_CAJA = T2.AA_CAJA
                      And    T1.MM_CAJA = T2.MM_CAJA 
                      And    T1.TI_MOVI = T2.TI_MOVI
                      And    T1.NU_COMP_CAJA = T2.NU_COMP_CAJA
                      Group  By T2.CO_ENTI, T1.TI_DOCU_ENTI, T1.NU_DOCU_ENTI 

		      IF @ISFE_SIST  = 'S'
                        Select @VNNU_ANTI = datediff(day ,@CDFE_VENC , GETDATE())  
		      ELSE 
                        Select @VNNU_ANTI = datediff(day ,@CDFE_VENC ,@IDFE_VENC_0002)  
                                      
                       If @VSST_CIER_CAJA is null
                         Select @VSST_CIER_CAJA = 'N'
    
                      If (@CNIM_TOTA >  @VNIM_PAGA_CAJA ) and @VSST_CIER_CAJA = 'N'
                          Begin 
			  -- Busco Importes renovados
			  Select @VNIM_PAGA_RENO = isnull(SUM( ISNULL(T2.IM_RENO_MDOC, 0)),0)
			  From   TCRENO_PROV T1, TDRENO_PROV T2
                  	  Where  T1.CO_EMPR =  @CSCO_EMPR
                  	  AND    T1.FE_RENO <= @IDFE_VENC_0002
                  	  AND    T1.TI_SITU != 'ANU'
                  	  AND    T2.CO_TIPO_DOCU = @OSTI_DOCU
                  	  AND    T2.NU_DOCU_PROV = @CSNU_LETR_PROV
			  AND    T1.CO_EMPR = T2.CO_EMPR  
                          AND    T1.NU_RENO = T2.NU_RENO
			  AND    T1.CO_PROV = T2.CO_PROV
				
			  SELECT @VNIM_PAGA_TOTA = ISNULL(@VNIM_PAGA_CAJA, 0) + 
			   		     ISNULL(@VNIM_PAGA_CARG, 0) + 
                         		     ISNULL(@VNIM_PAGA_CHEQ, 0) +
				 	     ISNULL(@VNIM_PAGA_RENO, 0) 

	                  Select @VNIM_DETA = @CNIM_TOTA - @VNIM_PAGA_TOTA 	

			  If @CNIM_TOTA > @VNIM_PAGA_TOTA

                            Insert #TWREPO_PROV ( CO_EMPR, FE_EMIS, FE_VENC, CO_TIPO_DOCU, NU_DOCU_PROV, CO_PROV,
                                                      NO_CORT_PROV, DE_OBS1, CO_MONE, NU_ANTI, IM_DETA, CO_TIPO_OPER)
                                Values (@CSCO_EMPR, @CDFE_EMIS, @CDFE_VENC, 'LET', @CSNU_LETR_PROV, 
                  @CSCO_PROV, @VSNO_CORT_PROV, NULL, @CSCO_MONE, @VNNU_ANTI, @VNIM_DETA, @CSCO_TIPO_OPER)
                          End
 
                  End
             End

           Fetch  CU_TMDOCU_PROV_Q01_1 INTO  @CSCO_EMPR, @CDFE_EMIS, @CDFE_VENC, 
           @CSNU_LETR_PROV,  @CSCO_PROV, @CNIM_TOTA, @CSCO_MONE,
	   @CSCO_MONE_DEFA, @CSCO_MONE_EXTR, @CSCO_TIPO_OPER

           Select @VNFE_0001 = @@FETCH_STATUS
       End

       Close CU_TMDOCU_PROV_Q01_1
       Deallocate CU_TMDOCU_PROV_Q01_1  
  End  

  Execute ('SELECT T1.CO_EMPR, T2.DE_NOMB, T1.FE_EMIS, T1.FE_VENC, T1.CO_TIPO_DOCU, T1.NU_DOCU_PROV, 
  T1.CO_TIPO_OPER, T1.CO_PROV, T1.NO_CORT_PROV, T1.DE_OBS1, T1.CO_MONE, T3.DE_MONE, T1.NU_ANTI, T1.IM_DETA 
  FROM #TWREPO_PROV T1, TMEMPR T2, TTMONE T3 
  Where T1.CO_EMPR = T2.CO_EMPR 
  AND T1.CO_MONE = T3.CO_MONE ' + @VSSE_ORDE ) 

RETURN
/*------------------------- FIN ------------------------------ */


GO
